package br.com.divulgaqui.service;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.jboss.logging.Logger;

import br.com.divulgaqui.client.MarcaServiceBeanLocal;
import br.com.divulgaqui.client.MarcaServiceBeanRemote;
import br.com.divulgaqui.client.exception.EntityIgualException;
import br.com.divulgaqui.entity.Marca;
import br.com.divulgaqui.persistence.dao.MarcaDAO;
import br.com.divulgaqui.persistence.daoimpl.MarcaDAOImpl;

@Stateless
public class MarcaServiceBean implements MarcaServiceBeanLocal,MarcaServiceBeanRemote {

	@PersistenceContext
	private EntityManager entityManager;
	private MarcaDAO marcaDAO;
	private Logger logg = Logger.getLogger(MarcaServiceBean.class);
	
	public MarcaServiceBean() {		
	}
	
	@PostConstruct
    public void init(){    	
    	this.marcaDAO = new MarcaDAOImpl(this.entityManager);
    }

	@Override
	public void salvar(Marca marca) throws EntityIgualException {
		Long id = marca.getId() == null ? 0 : marca.getId();
		Marca mar = this.marcaDAO.pesquisarMarcaPorNome(id,marca.getNome());
		if(mar == null){
			this.marcaDAO.salvar(marca);
		}else{
			logg.warn("Marca \""+marca.getNome()+"\" já foi cadastrada");
			throw new EntityIgualException();
		}	
	}

	@Override
	public void atualizar(Marca marca) throws EntityIgualException {
		Long id = marca.getId() == null ? 0 : marca.getId();
		Marca mar = this.marcaDAO.pesquisarMarcaPorNome(id,marca.getNome());
		if(mar == null){
			this.marcaDAO.atualizar(marca);
		}else{
			logg.warn("Marca \""+marca.getNome()+"\" já foi cadastrada");
			throw new EntityIgualException();
		}	
	}

	@Override
	public List<Marca> listarMarcas() {		
		return this.marcaDAO.listarMarcas();
	}

	@Override
	public List<Marca> listarMarcasAtiva() {		
		return this.marcaDAO.listarMarcasAtiva();
	}

	@Override
	public List<Marca> qtdProdutosPorMarca() {		
		return this.marcaDAO.qtdProdutosPorMarca();
	}
}
